home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / HENSA / MISC / GSTREAM / GSTREAM.ARC / h / gstream next >
Encoding:
Text File  |  1993-05-08  |  1.7 KB  |  67 lines

  1. #ifndef _gstream_h
  2. #define _gstream_h
  3.  
  4. #define gs_BUFSIZE    4096
  5. #define gs_PRINTFMAX    511
  6.  
  7. /* just to ensure that if stdio hasn't been included EOF is still
  8.  * defined
  9.  */
  10.  
  11. #include "flex.h"
  12. #include <stdio.h>
  13.  
  14. typedef enum {
  15.     READ,
  16.     WRITE,
  17.     INTERNAL_READ,
  18.     INTERNAL_WRITE
  19. } gs_type;
  20.  
  21. typedef size_t (*gswritehandler) ( void *ptr, size_t nbytes, void *stream);
  22. typedef size_t (*gsreadhandler) ( void *ptr, size_t nbytes, void *stream);
  23. typedef int (*gsclosehandler) ( void *stream);
  24.  
  25. /* does anyone out there know how I can get the compiler to accept
  26.  * gstream *stream instead of the messy void * in the three typedefs
  27.  * above? :-(
  28.  */
  29.  
  30. typedef struct {
  31.     void         *buffer;
  32.     int        bufsize, size;
  33.     int         pos;
  34.     int        error;
  35.     int        ungetsize;
  36.     void        *ungetbuf;
  37.     int        ungetpos;
  38.     gs_type type;
  39.     union
  40.     {
  41.         gsreadhandler    read;
  42.         gswritehandler    write;
  43.     } io;
  44.     gsclosehandler    close;
  45.     void        *data;
  46. } gstream;
  47.  
  48. /* exported function definitions for the gstream module follow */
  49.  
  50. extern    int    gsgetbuf(flex_ptr anchor, size_t maxsize, size_t minsize);
  51. extern    int    gsflush(gstream *to);
  52. extern    int    gsclose(gstream *stream);
  53. extern    int    gsgetc(gstream *gs);
  54. extern    int    gsputc(int c, gstream *gs);
  55. extern    size_t    gsread(void *ptr, size_t size, size_t nmemb, gstream *stream);
  56. extern    size_t    gswrite(void *ptr, size_t size, size_t nmemb, gstream *stream);
  57. extern    int    gsputs(const char *s, gstream *stream);
  58. extern    char    *gsgets(char *s, int n, gstream *stream);
  59. extern    int    gsprintf(gstream *stream, const char *format, ...);
  60. extern    int    gsungetc(int c, gstream *stream);
  61. extern    int    gseof(gstream *stream);
  62. extern    int    gsopeninternalr(gstream *stream);
  63. extern    int    gsopeninternalw(gstream *stream);
  64. extern    void    gsdiscardinternal(gstream *stream);
  65. extern    int    gserror(gstream *stream);
  66. #endif
  67.